﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;

namespace GestorDeFlotasDesktop
{
    public partial class frmMain : Form
    {      
        public frmMain()
        {
            InitializeComponent();
        }

        private void lvwMain_ItemActivate(object sender, EventArgs e)
        {
            if (lvwMain.SelectedItems.Count > 0)
            {
                switch (lvwMain.SelectedItems[0].Text)
                {
                    case "Clientes":
                        {
                            AbmCliente.AbmCliente abmCliente = new AbmCliente.AbmCliente(ModoAbm.Alta);
                            abmCliente.Show();
                        }
                        break;
                    case "Autos":
                        {
                            AbmAuto.AbmAuto abmAuto = new AbmAuto.AbmAuto(ModoAbm.Alta);
                            abmAuto.Show();
                        }
                        break;
                    case "Choferes":
                        {
                            AbmChofer.AbmChofer abmChofer = new AbmChofer.AbmChofer(ModoAbm.Alta);
                            abmChofer.Show();
                        }
                        break;
                    case "Asignación Chofer-Auto":
                        {
                            AsignacionChoferAuto.AsignacionChoferAuto asignacionAutoChofer = new AsignacionChoferAuto.AsignacionChoferAuto();
                            asignacionAutoChofer.Show();

                        }
                        break;
                    case "Relojes":
                        {
                            AbmReloj.AbmReloj abmReloj = new AbmReloj.AbmReloj(ModoAbm.Alta);
                            abmReloj.Show();
                        }
                        break;
                    case "Turnos":
                        {
                            AbmTurno.AbmTurno abmTurno = new AbmTurno.AbmTurno(ModoAbm.Alta);
                            abmTurno.Show();
                        }
                        break;
                    case "Viajes":
                        {
                            RegistrarViaje.RegistrarViajes regViajes = new RegistrarViaje.RegistrarViajes();
                            regViajes.Show();
                        }
                        break;
                    case "Rendición de cuenta del chofer":
                        {
                            RendirViajes.RendirViajes rendirViajes = new RendirViajes.RendirViajes();
                            rendirViajes.Show();
                        }
                        break;          
                    case "Facturación a Cliente":
                        {
                            Facturar.Facturar facturar = new Facturar.Facturar();
                            facturar.Show();
                        }
                        break;
                    case "Listado Estadístico":
                        {
                            ListadoEstadistico.ListadoEstadistico listado = new ListadoEstadistico.ListadoEstadistico();
                            listado.Show();
                        }
                        break;          
                    case "Usuarios":
                        {
                            AbmUsuario.AbmUsuario abmUsuario = new AbmUsuario.AbmUsuario();
                            abmUsuario.Show();
                        }
                        break;
                    case "Roles":
                        {
                            AbmRol.AbmRol abmRol = new AbmRol.AbmRol();
                            abmRol.Show();
                        }
                        break;
                    default:
                        break;
                }
            }            
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            OcultarFuncionalidadesDeshabilitadas();
        }

        private void OcultarFuncionalidadesDeshabilitadas()
        {
            IEnumerable<int> funcionalidadesHabilitadas = Sesion.UsuarioLogueado.GetFuncionalidades();

            foreach (ListViewItem item in lvwMain.Items)
            {
                if (!funcionalidadesHabilitadas.Contains(Convert.ToInt32(item.Tag)))
                {
                    item.Remove();
                }
            }
        }
    }
}
